/**
 * \file Unicite.h
 * \author Vincent JACQUEMIN
 * \author Catalin BLAJ
 * \date 2 Novembre 2013
 *
 * Fichier header Unicite.h pour le programme du Sudoku.
 */


#ifndef AUNICITE_H
#define AUNICITE_H

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>

#include "SCase.h"
#include "SUnite.h"
#include "SGrille.h"
#include "AResolutionLogique.h"

/**
 * \brief Fonction qui compte le nombre de solutions d'une grille.
 * \param grilleOriginale : Grille à résoudre (donnée-résultat).
 * \return Renvoie le nombre de solution de la grille.
 *
 * Cette fonction résout la grille en interne (la grille n'est pas modifiée en sortie) grâce à RL_resolutionGrille et retourne le nombre de solutions.
 */
int UG_resolution(SGrille* grille);

/**
 * \brief Met à jour les candidats dans les unités d'une case.
 * \param grille : Grille sur laquelle on travaille (donnée-résultat).
 * \param maCase : Case concernée (donnée-résultat).
 * \return Renvoie faux si et seulement si une case dans une des unités où se trouve maCase possède 0 candidat.
 *
 * Cette fonction met à jour les candidats des unités de maCase.
 */
bool UG_miseAJourCandidat(SGrille* grille, SCase* maCase);

#endif
